package com.lanchetech.entity;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 积分商品兑换订单
 */
@ApiModel(value = "com-lanchetech-entity-CoinOrder")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CoinOrder implements Serializable {
    /**
     * id
     */
    @ApiModelProperty(value = "id")
    private Long id;

    /**
     * 用户id
     */
    @ApiModelProperty(value = "用户id")
    private Long userId;

    /**
     * 商品SPU id
     */
    @ApiModelProperty(value = "商品SPU id")
    private Long spuId;

    /**
     * 积分商品id
     */
    @ApiModelProperty(value = "积分商品id")
    private Long coinProductId;

    /**
     * 购买数量
     */
    @ApiModelProperty(value = "购买数量")
    private Integer count;

    /**
     * 支付总积分
     */
    @ApiModelProperty(value = "支付总积分")
    private BigDecimal totalCostCoin;

    /**
     * 收货地址id
     */
    @ApiModelProperty(value = "收货地址id")
    private Long userAddressId;

    /**
     * 发货时间
     */
    @ApiModelProperty(value = "发货时间")
    private Date deliveryTime;

    /**
     * 发货快递公司编码
     */
    @ApiModelProperty(value = "发货快递公司编码")
    private String logisticsCompany;

    /**
     * 发货快递单号
     */
    @ApiModelProperty(value = "发货快递单号")
    private String logisticsNumber;

    /**
     * 发货状态 0 未发货 1 已发货 2 已签收
     */
    @ApiModelProperty(value = "发货状态 0 未发货 1 已发货 2 已签收")
    private Byte logisticsStatus;

    /**
     * 积分商品类型 0 兑换 1 抽奖
     */
    @ApiModelProperty(value = "积分商品类型 0 兑换 1 抽奖")
    private Byte type;

    /**
     * 抽奖结果 0 未中奖 1 已中奖
     */
    @ApiModelProperty(value = "抽奖结果 0 未中奖 1 已中奖")
    private Byte lotteryStatus;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    private Date createdAt;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    private Date updatedAt;

    private static final long serialVersionUID = 1L;

    public static CoinOrderBuilder builder() {
        return new CoinOrderBuilder();
    }
}